package com.spring.sd.ignore;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

@Component
public class MyBeanPostProcessor implements BeanPostProcessor {

    /**
     * 实现了BeanPostProcessor接口后，重写postProcessBeforeInitialization，在各种Aware接口执行完毕后执行该方法
     *
     * @param bean     本次处理的bean
     * @param beanName 本次处理的beanName（bean id）
     * @return 返回的是在本方法中处理后的bean
     */
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        if (StringUtils.pathEquals("a", beanName)) {
            System.out.println(">>>>>> 6 MyBeanPostProcessor.before, beanName: " + beanName);
        }
        return bean;

    }


    /**
     * 实现了BeanPostProcessor接口后，重写postProcessAfterInitialization，在initMethod方法执行完毕后执行该方法
     *
     * @param bean     本次处理的bean
     * @param beanName 本次处理的beanName（bean id）
     * @return 返回的是在本方法中处理后的bean
     */
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        if (StringUtils.pathEquals("a", beanName)) {
            System.out.println(">>>>>> 11 MyBeanPostProcessor.after, beanName: " + beanName);
        }
        return bean;
    }

}
